package com.anyou.mall.platform.service;

import com.anyou.common.core.domain.ApiResult;
import com.anyou.mall.platform.domain.PlaPlatformSettings;
import com.anyou.mall.platform.dto.*;
import com.anyou.mall.platform.vo.*;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 平台设置Service接口
 *
 * @author ylj
 * @date 2022-03-21
 */
public interface IPlaPlatformSettingsService extends IService<PlaPlatformSettings>
{



    /**
     * 获取首页顶部背景
     * @return
     */
    ApiResult<TopBackgroundVO> getTopBackground();

    /**
     * 设置首页顶部背景
     * @param dto
     * @param userId
     * @return
     */
    ApiResult setTopBackground(TopBackgroundDTO dto, Long userId);

    /**
     * 获取底部导航栏图标
     * @return
     */
    ApiResult<BottomIconVO> getBottomIcon();

    /**
     * 设置底部导航栏图标
     * @param dto
     * @param userId
     * @return
     */
    ApiResult setBottomIcon(BottomIconDTO dto, Long userId);

    /**
     * 获取保证金相关
     * @return
     */
    ApiResult<BondVO> getBond();

    /**
     * 设置保证金相关
     * @param dto
     * @param userId
     * @return
     */
    ApiResult setBond(BondDTO dto, Long userId);

    /**
     * 获取关于我们
     * @return
     */
    ApiResult<AboutUsVO> getAboutUs();

    /**
     * 设置关于我们
     * @param dto
     * @param userId
     * @return
     */
    ApiResult setAboutUs(AboutUsDTO dto, Long userId);

    /**
     * 获取用户协议
     * @return
     */
    ApiResult getUserAgreementInfo();

    /**
     * 设置用户协议
     * @param userAgreementInfo
     * @param userId
     * @return
     */
    ApiResult setUserAgreementInfo(String userAgreementInfo, Long userId);

    /**
     * 获取隐私政策
     * @return
     */
    ApiResult getPrivacyPolicy();

    /**
     * 设置隐私政策
     * @param privacyPolicy
     * @param userId
     * @return
     */
    ApiResult setPrivacyPolicy(String privacyPolicy, Long userId);

    /**
     * 获取汽配商入驻协议
     * @return
     */
    ApiResult getAutoPartsSettledAgreement();

    /**
     * 保存汽配商入驻协议
     * @param autoPartsSettledAgreement
     * @param userId
     * @return
     */
    ApiResult setAutoPartsSettledAgreement(String autoPartsSettledAgreement, Long userId);

    /**
     * 获取汽配商保证金支付协议和开店协议
     * @return
     */
    ApiResult getAutoPartsPaymentAgreement();

    /**
     * 保存汽配商保证金支付协议和开店协议
     * @param autoPartsPaymentAgreement
     * @param userId
     * @return
     */
    ApiResult setAutoPartsPaymentAgreement(String autoPartsPaymentAgreement, Long userId);

    /**
     * 获取维修厂入驻协议
     * @return
     */
    ApiResult getRepairSettledAgreement();

    /**
     * 保存维修厂入驻协议
     * @param repairSettledAgreement
     * @param userId
     * @return
     */
    ApiResult setRepairSettledAgreement(String repairSettledAgreement, Long userId);

    /**
     * 获取维修厂保证金支付协议
     * @return
     */
    ApiResult getRepairPaymentAgreement();

    /**
     * 保存维修厂保证金支付协议
     * @param repairPaymentAgreement
     * @param userId
     * @return
     */
    ApiResult setRepairPaymentAgreement(String repairPaymentAgreement, Long userId);

    /**
     * 获取司机申请加盟协议
     * @return
     */
    ApiResult getDriverJoinAgreement();

    /**
     * 保存司机申请加盟协议
     * @param driverJoinAgreement
     * @param userId
     * @return
     */
    ApiResult setDriverJoinAgreement(String driverJoinAgreement, Long userId);

    /**
     * 获取商家会员缴费协议
     * @return
     */
    ApiResult getBusinessPayAgreement();

    /**
     * 保存商家会员缴费协议
     * @param businessPayAgreement
     * @param userId
     * @return
     */
    ApiResult setBusinessPayAgreement(String businessPayAgreement, Long userId);

    /**
     * 获取面包车配送费
     * @return
     */
    ApiResult<DistributionPriceVO> getMinibusDistributionPrice();

    /**
     * 保存面包车配送费
     * @param dto
     * @param userId
     * @return
     */
    ApiResult setMinibusDistributionPrice(DistributionPriceDTO dto, Long userId);

    /**
     * 获取小货车配送费用
     * @return
     */
    ApiResult<DistributionPriceVO> getMinivanDistributionPrice();

    /**
     * 保存小货车配送费用
     * @param dto
     * @param userId
     * @return
     */
    ApiResult setMinivanDistributionPrice(DistributionPriceDTO dto, Long userId);

    /**
     * 获取摩托车配送费用
     * @return
     */
    ApiResult<DistributionPriceVO> getMotorcycleDistributionPrice();

    /**
     * 保存摩托车配送费用
     * @param dto
     * @param userId
     * @return
     */
    ApiResult setMotorcycleDistributionPrice(DistributionPriceDTO dto, Long userId);

    /**
     * 获取单车配送费用
     * @return
     */
    ApiResult<DistributionPriceVO> getBicycleDistributionPrice();

    /**
     * 保存单车配送费用
     * @param dto
     * @param userId
     * @return
     */
    ApiResult setBicycleDistributionPrice(DistributionPriceDTO dto, Long userId);

    /**
     * 获取超重人工费用
     * @return
     */
    ApiResult<DistributionPriceVO> getExceedWeightPrice();

    /**
     * 保存超重人工费用
     * @param dto
     * @param userId
     * @return
     */
    ApiResult setExceedWeightPrice(DistributionPriceDTO dto, Long userId);

    /**
     * 获取超体积人工费用
     * @return
     */
    ApiResult<DistributionPriceVO> getExceedVolumePrice();

    /**
     * 保存超体积人工费用
     * @param dto
     * @param userId
     * @return
     */
    ApiResult setExceedVolumePrice(DistributionPriceDTO dto, Long userId);

    /**
     * 获取距离限制
     * @return
     */
    ApiResult getDistanceLimit();

    /**
     * 设置距离限制
     * @param distanceLimit
     * @param userId
     * @return
     */
    ApiResult setDistanceLimit(String distanceLimit, Long userId);

    /**
     * 获取星级会员
     * @return
     */
    ApiResult<StarMemberVO> getStarMember();

    /**
     * 设置星级会员
     * @param dto
     * @param userId
     * @return
     */
    ApiResult setStarMember(StarMemberDTO dto, Long userId);

    /**
     * 获取抽成比例
     * @return
     */
    ApiResult getCommission();

    /**
     * 设置抽成比例
     * @param commission
     * @param userId
     * @return
     */
    ApiResult setCommission(String commission, Long userId);

    /**
     * 查看是否需要支付保证金
     * @param type 类型1-汽配商入驻,2-维修厂入驻,3-司机入驻
     * @return
     */
   public Boolean isPayBaod(int type);

}
